stack: Add gtk_stack_remove
authorMatthias Clasen <mclasen@redhat.com>
Thu, 7 May 2020 19:49:04 +0000 (15:49 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 12 May 2020 02:21:39 +0000 (22:21 -0400)
This is a replacement for gtk_container_remove.

docs/reference/gtk/gtk4-sections.txt
gtk/gtkstack.c
gtk/gtkstack.h

index 04d667f75e38e291b78dd84ab1a46ee94502fd70..95553a798869c1de1675621038979ec26de14ce8 100644 (file)
@@ -5625,6 +5625,7 @@ GtkStack
 gtk_stack_new
 gtk_stack_add_named
 gtk_stack_add_titled
+gtk_stack_remove
 gtk_stack_get_child_by_name
 gtk_stack_get_page
 gtk_stack_get_pages
index a0d8253edcf55938a89707df7819cb4687b66a83..9feb4f8d0dc999c90c994d8112bc18b43e9478f2 100644 (file)
@@ -554,8 +554,6 @@ gtk_stack_pages_new (GtkStack *stack)
 
 static void     gtk_stack_add                            (GtkContainer  *widget,
                                                           GtkWidget     *child);
-static void     gtk_stack_remove                         (GtkContainer  *widget,
-                                                          GtkWidget     *child);
 static void     gtk_stack_forall                         (GtkContainer  *container,
                                                           GtkCallback    callback,
                                                           gpointer       callback_data);
@@ -1496,14 +1494,25 @@ stack_remove (GtkStack  *stack,
     gtk_widget_queue_resize (GTK_WIDGET (stack));
 }
 
-static void
-gtk_stack_remove (GtkContainer *container,
-                  GtkWidget    *child)
+/**
+ * gtk_stack_remove:
+ * @stack: a #GtkStack
+ * @child: the child to remove
+ *
+ * Removes a child widget from @stack.
+ */
+void
+gtk_stack_remove (GtkStack  *stack,
+                  GtkWidget *child)
 {
-  GtkStackPrivate *priv = gtk_stack_get_instance_private (GTK_STACK (container));
+  GtkStackPrivate *priv = gtk_stack_get_instance_private (stack);
   GList *l;
   guint position;
 
+  g_return_if_fail (GTK_IS_STACK (stack));
+  g_return_if_fail (GTK_IS_WIDGET (child));
+  g_return_if_fail (gtk_widget_get_parent (child) == GTK_WIDGET (stack));
+
   for (l = priv->children, position = 0; l; l = l->next, position++)
     {
       GtkStackPage *page = l->data;
@@ -1511,7 +1520,7 @@ gtk_stack_remove (GtkContainer *container,
         break;
     }
 
-  stack_remove (GTK_STACK (container), child, FALSE);
+  stack_remove (stack, child, FALSE);
 
   if (priv->pages)
     g_list_model_items_changed (G_LIST_MODEL (priv->pages), position, 1, 0);
index ad8b4cb697dc2423eac15085486654fa2df04501..23f22a6fb8bcdf6ce5b5eac00924fbe948f29c02 100644 (file)
@@ -94,6 +94,9 @@ GtkStackPage *         gtk_stack_add_titled              (GtkStack
                                                           GtkWidget              *child,
                                                           const gchar            *name,
                                                           const gchar            *title);
+GDK_AVAILABLE_IN_ALL
+void                   gtk_stack_remove                  (GtkStack               *stack,
+                                                          GtkWidget              *child);
 
 GDK_AVAILABLE_IN_ALL
 GtkStackPage *         gtk_stack_get_page                (GtkStack               *stack,